package com.cll.learn.rpc.common.serializer;

/**
 * 描述信息:
 * 序列化的顶级接口
 * @author CLL
 * @version 1.0
 * @date 2020/9/14 15:29
 */
public interface Serializable {

    /**
     * 将对象序列化为byte数组，进行数据的传递
     * @param object    需要序列化的对象
     * @return  序列化之后的byte数组
     */
    <T> byte[] serializable(T object);

    /**
     * 将byte数组反序列化为指定类型的对象
     * @param clazz 反序列化类型
     * @param byteData  byte数组数据
     * @param <T>   泛型支持
     * @return 反序列化之后的对象
     */
    <T> T deserializable(Class<T> clazz, byte[] byteData);
}